/**
 * 图形验证码组件，依赖ui组件ui:widget="图形验证码"
 *
 * @author wqhui
 */
define(function (require, exports, module) {
    var Utils = require('common-utils');

    module.exports = {
        /**
         * 是否校验验证码
         */
        needAuthCode: true,

        /**
         * 获取验证码
         *
         * @param inputId
         * @param imageId
         * @param changeLinkId
         */
        getAuthcode: function (inputId, imageId, changeLinkId) {
            $("#" + inputId).val("").css("color", "");
            $("#" + imageId).attr({src: Utils.getContextPath() + '/authcode.jpg?t=' + (new Date()).getTime()}).show().click(function () {
                $("#" + imageId).attr({src: Utils.getContextPath() + '/authcode.jpg?t=' + (new Date()).getTime()}).show();
            });
            changeLinkId && $("#" + changeLinkId).html("换一张").click(function () {
                $("#" + imageId).attr({src: Utils.getContextPath() + '/authcode.jpg?t=' + (new Date()).getTime()}).show();
            });
        },

        /**
         * 通过Ajax获取是否显示验证码的标志位，并控制UI组件的展示效果
         */
        checkShowAuthcode: function (showCallback) {
            var _this = this;

            $.ajax({
                url: Utils.getContextPath() + "/account/login/skipAuthCode",
                type: 'POST',
                global: false,
                dataType: 'json',
                success: function (sac) {
                    skipAuthCode = sac;
                    // 服务端返回的SkipAuthCode
                    $div = $("*").filter(function () {
                        return $(this).attr("ui:widget") == '图形验证码';
                    });
                    if (skipAuthCode != '1') {
                        $div.parent().removeClass("none");
                        $div.show();
                        _this.needAuthCode = true;
                        if (typeof(showCallback) == "function") {
                            showCallback();
                        }
                    } else {
                        $div.parent().addClass("none");
                        $div.find("input[name=authcode]").val("");
                        $div.hide();
                        _this.needAuthCode = false;
                    }
                },
                error: function () {
                    $("*").filter(function () {
                        return $(this).attr("ui:widget") == '图形验证码';
                    }).show();
                    _this.needAuthCode = true;
                    if (typeof(showCallback) == "function") {
                        showCallback();
                    }
                }
            });
        }
    };
});
